package tongwentongshu.com.app.utils;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;

import java.io.File;

/**
 * Glide加载图片，中间层封装
 *
 * @author wangfubin
 */
public class GlideUtil {
    /**
     * 不变形加载网络图片
     *
     * @param context    上下文
     * @param url        图片链接
     * @param errorPic   加载失败默认图片
     * @param loadingPic 加载中默认图片
     * @param imageView  要显示图片的控件
     */
    public static void setImage(Context context, String url, int errorPic,
                                int loadingPic, ImageView imageView) {
        Glide.with(context).load(url).asBitmap().centerCrop()
                .placeholder(loadingPic).error(errorPic)
                .into(new MyBitmapImageViewTarget(imageView));
    }

    public static void setImage1(Context context, String url, int errorPic,
                                 int loadingPic, final ImageView imageView) {
        Glide.with(context).load(url).placeholder(loadingPic)
                .error(errorPic)
                .crossFade()
                .into(new GlideDrawableImageViewTarget(imageView) {

                    @Override
                    public void onLoadStarted(Drawable placeholder) {
                        // TODO Auto-generated method stub
                        super.onLoadStarted(placeholder);
                    }

                    @Override
                    public void onResourceReady(GlideDrawable drawable,
                                                GlideAnimation anim) {
                        imageView.setImageDrawable(drawable);
                        super.onResourceReady(drawable, anim);
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        // TODO Auto-generated method stub
                        super.onLoadFailed(e, errorDrawable);
                    }
                });
    }

    /**
     * @param context    上下文
     * @param url        图片链接
     * @param errorPic   加载失败默认图片
     * @param loadingPic 加载中默认图片
     * @param imageView  要显示图片的控件
     * @param width      The width in pixels to use to load the resource.
     * @param height     The height in pixels to use to load the resource.
     * @param imageView  要显示图片的控件
     */
    public static void setImage(Context context, String url, int errorPic,
                                int loadingPic, int width, int height, ImageView imageView) {
        Glide.with(context).load(url).asBitmap().centerCrop().error(errorPic)
                // load失敗的Drawable
                .placeholder(loadingPic).override(width, height)
                .into(new MyBitmapImageViewTarget(imageView));
    }

    /**
     * 加载sd卡指定位置图片
     */
    public static void setFileImage(Context context, File file,
                                    ImageView imageView) {
        Glide.with(context).load(file).asBitmap().centerCrop()
                .into(new MyBitmapImageViewTarget(imageView));
    }

    /**
     * 加载sd卡指定位置图片
     */
    public static void setFileImage(Context context, int errorPic,
                                    int loadingPic, File file, ImageView imageView) {
        Glide.with(context).load(file).asBitmap().centerCrop().error(errorPic)
                .placeholder(loadingPic)
                .into(new MyBitmapImageViewTarget(imageView));
    }

    // public static void setFileCircleImage(final Context context, File file,
    // final ImageView imageView) {
    // Glide.with(context).load(file).asBitmap().centerCrop()
    // .into(new BitmapImageViewTarget(imageView) {
    // @Override
    // protected void setResource(Bitmap resource) {
    // RoundedBitmapDrawable circularBitmapDrawable =
    // RoundedBitmapDrawableFactory
    // .create(context.getResources(), resource);
    // circularBitmapDrawable.setCircular(true);
    // imageView.setImageDrawable(circularBitmapDrawable);
    // }
    // });
    // }

    /**
     * 加载drawable图片
     *
     * @param context    上下文
     * @param resourceId 资源id
     * @param errorPic   加载失败默认图片
     * @param loadingPic 加载中默认图片
     * @param imageView  要显示图片的控件
     */
    public static void setDrawableImage(Context context, Integer resourceId,
                                        int errorPic, int loadingPic, ImageView imageView) {
        Glide.with(context).load(resourceId).error(errorPic)// load失敗的Drawable
                .placeholder(loadingPic)// loading時候的Drawable
                .fitCenter()// 中心切圖, 會填滿
                .crossFade().into(imageView);
    }

    /**
     * 加载gif图片
     *
     * @param context    上下文
     * @param url        图片链接
     * @param errorPic   加载失败默认图片
     * @param loadingPic 加载中默认图片
     * @param imageView  要显示图片的控件
     */
    public static void setGifImage(Context context, String url, int errorPic,
                                   int loadingPic, ImageView imageView) {
        Glide.with(context).load(url).asGif().error(errorPic)// load失敗的Drawable
                .placeholder(loadingPic)// loading時候的Drawable
                .fitCenter()// 中心切圖, 會填滿
                .crossFade().into(imageView);
    }

    // /**
    // * 裁剪网络图片为圆形
    // *
    // * @param context 上下文
    // * @param url 图片链接
    // * @param errorPic 加载失败默认图片
    // * @param loadingPic 加载中默认图片
    // * @param imageView 要显示图片的控件
    // */
    // public static void setCircleImage(final Context context, String url, int
    // errorPic, int loadingPic, final ImageView imageView) {
    // Glide.with( context )
    // .load( url )
    // .asBitmap()
    // .error( errorPic )// load失敗的Drawable
    // .placeholder( loadingPic )// loading時候的Drawable
    // .centerCrop()
    // .into( new BitmapImageViewTarget( imageView ) {
    // @Override protected void setResource(Bitmap resource) {
    // RoundedBitmapDrawable circularBitmapDrawable
    // = RoundedBitmapDrawableFactory.create(
    // context.getResources(), resource );
    // circularBitmapDrawable.setCircular( true );
    // imageView.setImageDrawable( circularBitmapDrawable );
    // }
    // } );
    // }
    //
    //
    // /**
    // * 裁剪网络图片为圆形
    // *
    // * @param context 上下文
    // * @param url 图片链接
    // * @param errorPic 加载失败默认图片
    // * @param loadingPic 加载中默认图片
    // * @param imageView 要显示图片的控件
    // */
    // public static void setCircleImageView(final Context context, String url,
    // int errorPic, int loadingPic, final CircleImageView imageView) {
    // Glide.with( context )
    // .load( url )
    // .asBitmap()
    // .error( errorPic )// load失敗的Drawable
    // .placeholder( loadingPic )// loading時候的Drawable
    // .centerCrop()
    // .into( new BitmapImageViewTarget( imageView ) {
    // @Override protected void setResource(Bitmap resource) {
    // RoundedBitmapDrawable circularBitmapDrawable
    // = RoundedBitmapDrawableFactory.create(
    // context.getResources(), resource );
    // imageView.setImageDrawable( circularBitmapDrawable );
    // }
    // } );
    // }
}
